package cn.lidar.impl;

import cn.lidar.entity.csvData;
import cn.lidar.interfaces.ControlGetPicDataService;
import cn.lidar.util.FileSortUtils;
import com.alibaba.fastjson.JSON;
import com.csvreader.CsvReader;
import org.springframework.stereotype.Service;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@Service
public class ControlGetPicDataImpl implements ControlGetPicDataService {
    @Override
    public List<String> getPicData(String currentFileName) {
        String path = "D:" + File.separator + "LidarData" + File.separator + "bin" + File.separator + currentFileName + File.separator;     //  本地路径
//        String path = "C:" + File.separator + "LidarData" + File.separator + "bin" + File.separator + currentFileName + File.separator;   //  服务器路径
        List<String> result = new ArrayList<>();    //  把30个文件的json数据存在result数组中

        List<File> sortFile = new ArrayList<>();
        FileSortUtils fileSortUtils = new FileSortUtils();
        sortFile = FileSortUtils.fileSort(path);
        for (File file : sortFile) {
            csvData data = new csvData();
            List<String> firstRowData = new ArrayList<String>();    //  第一列所有元素
            List<List<String>> allData = new ArrayList<List<String>>();   //  装每行所有的元素
            String filePath = path + file.getName();    //  本地路径
            // 创建CSV读对象
            CsvReader csvReader = null;     //  关闭流，先在外部声明，在 try 里面 new，最后在 finally 里关闭
            try {
                // 读表头
                csvReader = new CsvReader(filePath);
                csvReader.readHeaders();
                while (csvReader.readRecord()) {
                    List<String> evertData = new ArrayList<String>();   //  每行所有的元素
                    int count = csvReader.getColumnCount();    // 该行的元素个数
                    for (int i = 1; i < count; i++) {
                        evertData.add(csvReader.get(i));    // 遍历读取该行每一个元素
                    }
                    allData.add(evertData);
                    firstRowData.add(csvReader.get(0));
                }
                data.setFirstRowData(firstRowData);
                data.setAllData(allData);
                result.add(JSON.toJSONString(data));
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (csvReader != null) {
                        csvReader.close();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        return result;
    }
}


